package day18.homework;

// 定义唱歌能力接口
interface ISingAble {
    void sing();
}

// 定义飞行能力接口
interface IFlyAble {
    void fly();
}

// 定义Person类
class Person {
    // 属性
    protected String name;
    protected int age;

    // 构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 行为方法
    public void run() {
        System.out.println(name + " 正在跑步");
    }

    // getter和setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

// 定义Student类，继承Person类，并实现ISingAble和IFlyAble接口
class Student extends Person implements ISingAble, IFlyAble {
    // 属性
    private String id;
    private double score;

    // 构造方法
    public Student(String name, int age, String id, double score) {
        super(name, age); // 调用父类构造方法
        this.id = id;
        this.score = score;
    }

    // 学习行为
    public void study() {
        System.out.println(name + " (学号: " + id + ") ，成绩: " + score);
    }

    // 实现ISingAble接口的sing方法
    @Override
    public void sing() {
        System.out.println(name + " 正在唱歌");
    }

    // 实现IFlyAble接口的fly方法
    @Override
    public void fly() {
        System.out.println(name + " 正在幻想飞翔");
    }

    // getter和setter方法
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}

// 测试类
public class test6 {
    public static void main(String[] args) {
        // 创建Student对象
        Student student = new Student("小明", 21, "0001", 100);

        // 调用继承自Person的方法
        student.run();

        // 调用Student自己的方法
        student.study();

        // 调用接口实现的方法（增强功能）
        student.sing();
        student.fly();
    }
}
